package com.zzyy.study.mq.service;

import com.zzyy.study.common.service.IBaseService;
import com.zzyy.study.mq.po.MsgPO;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @auther zzyy
 * @create 2024-07-14 15:42
 */
public interface IMsgService extends IBaseService<MsgPO>
{
    /**
     * 批量插入消息
     *
     * @param expectSendTime  期望发送时间
     * @param msgBodyJsonList
     * @return
     */
    List<MsgPO> batchInsert(LocalDateTime expectSendTime, List<String> msgBodyJsonList);

    /**
     * 将消息状态置为成功
     *
     * @param msgPO
     */
    void updateStatusSuccess(MsgPO msgPO);

    /**
     * 将消息状态置为失败
     *
     * @param msgPO
     * @param failMsg       失败原因
     * @param sendRetry     是否还需要重试
     * @param nextRetryTime 下次重试发送时间
     */
    void updateStatusFail(MsgPO msgPO, String failMsg, boolean sendRetry, LocalDateTime nextRetryTime);
}
